User's guide /

/

Work Flow

Work Flow

OBS ERP allows you to create custom processes in the context of an ERP module. For example, in module "Tasks" you can have the following process:

Work Flow Example

The steps of each process can be changed and automation functions can be applied. For example, you can force OBS ERP to send out email message on completion of a step. Some of the automation functions include:

Automation functions:

AddQtyToAssetWareHouse

No description available.

AddQtyToWareHouse

This function is used to add quantities in stock. It can be triggered only in module warehouse_slips.

ApplyDigitalSignature

This function will require the user to input login password in order to complete the step.

ApproveRelatedExpenses

This function is used to approve all expense rows.

BlockQTY

Block quantities in stock

BlockQtyInWarehouse

This function blocks quantities in the warehouse.

CallAPIEndpoint

Example:
/api/~~col_name~~/~~col_name1~~

ChatMessage

Sends a chat message through the firebase platform. The message is sent to mobile devices running Android or iOS

Parameters:
message|recipient_1|recipient_2|recipeint_N

Where:
message - the text message that will be sent
recipient_N - Can be one of the following:

  • column name - a column that points to the users module, e.g. user_id (integer references users)
  • management_chain - two levels above the employee
  • first_level_management_chain - one level above the employee
  • staff_json - looks for a column called 'staff_json'. The column must be type JSON and must contain the following json structure [ID, ...], e.g. [1,2,3], where 1, 2, 3 are IDs of employees in module "Staff".
  • __PRIV__PrivilegeName - e.g. __PRIV__Accouting. This will send email to employees in this privilege group
  • a list of user ids

CheckExpense

Check If related expenses are paid.

CheckForAttachedEmail

This function checks if there at least one related email to a record.

Requirements:
The module should be configured with "Mailings" set to ON.

CheckForAttachment

It checks if the record has at least one file attached

Parameters
file1|file2|....|fileN

CheckIfAllTasksAreCompleted

Checks if all assigned tasks are in status completed or rejected

CheckIfConditionIsMet

// Condition format: field_name[module.field_name <>= value]

CheckIfExpensesAreApproved

Can be used only in module "Quotations"

It checks if all expenses related to a quotation have been approved

CheckIfFieldIsNotEmpty

This function checks if the field specified as function parameter is empty. If it is, the function returns an error.

Parameters:
1. Field Name

Example:
feedback

Update: now you can check more than one field. List the field names with pipe delimiter.

Example:
contact_id|email

CheckIfRelatedAreCompleted

Checks if the related records contain boolean columns and returns true if all of them are checked.

CheckIfWarehouseSlipExists

This function checks if a warehouse slip related to the selected document exists

Function params: The status id of the warehouse slip.

For example, if you need the warehouse slip to be in status articles_accepted, select 4

CheckIncome

This function can be used to check if all related invoices to a record have been paid

CheckTaskCheckList

This function checks if all checklist items have been completed. If they are not, the task cannot be completed.

CheckTaskDependencies

Description:
Checks if the dependent tasks are in the required status. Implements the following dependencies:

  • Start-To-Start
  • Start-To-Finish
  • Finish-To-Start
  • Finish-To-Finish

Requirements:

  • Module "task_dependecies" must be populated with information:
    • name of the dependency - one of the following Start-To-Start, Start-To-Finish, Finish-To-Start, Start-To-Start
    • code of the dependency - SS, SF, FS, FF
    • predecessor statuses - comma-separated list of integers. The integers are the ids of the columns in module "Task Statuses"
    • successor statuses - comma-separated list of integers. The integers are the ids of the columns in module "Task Statuses"
  • Fields in module tasks:
    • predecessors - comma-separated list of WBS elements. It could contain the code of dependency, e.g. 1.1[FF],1,2
    • WBS element

CompleteSurvey

Used only in module "Tenders" !

This functions starts a negotiation with the selected winner of a tender. The administrator of the tender needs to define final prices for each question before triggering this function. In addition, winner should be selected.

The email template sent to the winner contains a confirmation link allowing the winner to give their formal consent that the final price is accepted and they can start working on the subject of the tender.

System email is used to send the email template.

ContactValidation

This function checks if the fields listed as parameters are populated.

Parameters:
Example - record_id->contract_clients->client_id:field1|field2|field3|fieldN

ConvertDocument

This function transfers a document from one module to another based on column mapping defined in module_conversion_mapping.

You need to set up manually the mapping in order the function to work

Parameters:
NameOfMapping

CopyRecord

This function copies the current record. The new record is set with status_id = 1

CreateBulkPurchaseOrderFromOrder

This function creates purchase orders in module "Expenses". The created purchase order is for materials that are not in stock. The software calculates the ordered quantity based on the settings in module "Materials" using the following formula.

Ordered Quantitiy = Min_quantity_in_stock + Min_order_quantity - Quantitiy in stock

Min_quantity_in_stock and Min_order_quantity are parameters in module "Materials"

CreateEmploymentContractFromStaff

This function generates an employment contract from an employee record.

It works only in module "Staff"

Requirement: A template named "employment_contracts" residing in module "Templates"

CreateExpenseFromContract

Creates an expense document based on a contract ( useful for banks )

Params:
key:value|key1:value1|...

CreateInvoiceFromOrder

This function creates an invoice from an order

CreateInvoiceFromWorksheet

500

CreateInvoicesFromContractPayments

This function works only for module "Contracts". It generated invoices based on payment plan. It takes all payments one by one and produces documents in module "Invoices".

CreatePDFSnapshot

Creates PDF Snapshot of the record

CreateProject

It creates a project based on a record.

Requirements:

  • If source module is quotations than all related expenses should be approved
  • The source module should contain the following fields:
    • project_id
    • deadline
    • issuer
    • contact_id
    • company_id

These fields are mandatory to create a project record.

CreateProjectFromQuotationWithItems

This function creates a project based on a quotation including the materials and products

CreateQuoteFromBudget

Creates a quotation base on budget input data

CreateQuoteFromProject

This function creates a quotation without quotation items from project. It updates the quotation_id field in the project

CreateStaffFromPotentialCandidate

Creates an employee from a potential candidate.

This function can be triggered only through module "Potential candidates"

CreateSubRecords

..ajksndasd

CreateWhSlipsFromTransfer

Creates two warehouse slips from a warehouse transfer document

InformRecipients

This function can be used only in modules "Tenders" and "Surveys"

It selects all participants and sends an email containing the tender or survey email template.

System email is used to send the email. The email template is defined in "survey_email"

TBD: survey_email to be moved to email_templates module

ManufactureProduct

This functions should be triggered through manufacturing requests.

Params: SourceWarehouseID -> DestinationWarehouseID

Example: 1 -> 2

Module: manufaturing_requests

ManufactureProductFIFO

Similar to ManufactureProduct. The materials in the recipe are obtained on FIFO basis.

ManufactureProductLIFO

Similar to ManufactureProduct. The materials in the recipe are obtained on LIFO basis.

ManufactureProductsAndTransferMaterials

This function can be used only in module activity_report. It is used to check if the selected material quantities are in stock. If product is selected, its materials are checked recursively as well. If all materials are in stock, the system generates manfucturing requests for the selected products and warehouse transfer documents for the rest of the materials

MarkPaid

Updates the record setting paid to true

OrderReversal

To be documented

PickMaterialFromGroup

This function will check if there is material groups in the recipe. If that is the case, the system will return an error and request the user to pick specific material belonging to the selected group.

RawSQL

This runs an SQL function and checks for exceptions. If no exceptions are found, the function is successful. The function must accept one integer parameter - the id of the record

Parameters: SQL function name.

RawSQLWithUser

This runs an SQL function and checks for exceptions. If no exceptions are found, the function is successful. The function must have two parameters

  • record_id integer - the id of the record
  • user_id integer - the user changing the status

Parameters: SQL function name.

ReleaseQTY

Releases blocked quantities

RemoveQtyFromAssetWarehouse

No description available.

RemoveQtyFromWarehouse

This function removes qtys from warehouse

RemoveRelatedRecord

Removes a related record. The parameter should be a field name which points to the record that should be removed.

RequestApproval

This function implements an approval process. It submits an email request to the management chain of the requestor. The managers have the option to approve or reject the request by clicking buttons embedded in the email notification request. As soon as the approval or rejection is made, the status of the document is changed to "approved" or "rejected" depending on the management decision.

Requirements:

  • The module should contain the following fields (they can be created automatically in the "Constructor" by turning on the "Approvals" option):
    • approved = true/false
    • rejected = true/false
    • approved_by = integer (references module staff)
  • The module should contain a field called status_id referencing a module called module_statuses
    • module_statuses should contain statuses named "approved" and "rejected" (approved_, approved__, rejected_, rejected__ are also allowed). Both statuses must have "Manual Step" set to "False"
  • The requestor must be registered in modules "Staff" and "Users"

Function parameters:

  • One of the following options are possible, but none of them is mandatory:
    • FieldName - the field must reference module "Staff". If such a parameter is defined, the system will send the request to the selected person as well as the managers. This does not mean that this person is authorized to approve the request
    • EmailTemplate - a name of an email template residing in module email_templates
    • EmailTemplate|FieldName|EmailTemplate...... - a combination of the above

Email notifications:

  • Approval request email notification template
    • by default, the system uses an email template called "request_for_approval". This email template contains information about the approval request and it contains a link to the approval interface.
    • Another template can be used by specifying a function parameter.
    • The Requestor's personal email is used to send the email notification.
    • The request is sent to the following recipients: TO: manager_email, replacement_id_email (if applicable); CC: employee_email, manager_of_manager_email. Additional emails can be added if function parameters are defined
  • Resolution email notification
    • by default, the system generates an email template containing the manager's decision and additional information
    • a custom email notification template can be defined in every module using the following convention:
      • approval email template name: module_approve
      • rejection email template name: module_reject
    • Upon approval or rejection, the system uses the system email to inform the requestor about the resolution

Approvers:

  • The approvers must be part of the management chain above the requestor.
  • If you set "first_level_management" as a parameter, the system will notify first line managers only

Delegations:

  • The approvers must be part of the management chain above the requestor.

RequestApprovalWithSystemEmail

This function implements an approval process. It submits an email request to the management chain of the requestor. The managers have the option to approve or reject the request by clicking buttons embedded in the email notification request. As soon as the approval or rejection is made, the status of the document is changed to "approved" or "rejected" depending on the management decision.

Requirements:

  • The module should contain the following fields (they can be created automatically in the "Constructor" by turning on the "Approvals" option):
    • approved = true/false
    • rejected = true/false
    • approved_by = integer (references module staff)
  • The module should contain a field called status_id referencing a module called module_statuses
    • module_statuses should contain statuses named "approved" and "rejected" (approved_, approved__, rejected_, rejected__ are also allowed). Both statuses must have "Manual Step" set to "False"
  • The requestor must be registered in modules "Staff" and "Users"

Function parameters:

  • One of the following options are possible, but none of them is mandatory:
    • FieldName - the field must reference module "Staff". If such a parameter is defined, the system will send the request to the selected person as well as the managers. This does not mean that this person is authorized to approve the request
    • EmailTemplate - a name of an email template residing in module email_templates
    • Field EmailTemplate|FieldName|EmailTemplate...... - a combination of the above
    • __approvers__|EmailTemplate - requests approval from all employees listed in the json field "approvers". The following columns have to be present in the module - approvers json not null, approvers_names json not null.

Email notifications:

  • Approval request email notification template
    • by default, the system uses an email template called "request_for_approval". This email template contains information about the approval request and it contains a link to the approval interface.
    • Another template can be used by specifying a function parameter.
    • The System email is used to send the email notification. Configured in module Admin -> System Email
    • The request is sent to the following recipients: TO: manager_email, replacement_id_email (if applicable); CC: employee_email, manager_of_manager_email. Additional emails can be added if function parameters are defined
  • Resolution email notification
    • by default, the system generates an email template containing the manager's decision and additional information
    • a custom email notification template can be defined in every module using the following convention:
      • approval email template name: module_approve
      • rejection email template name: module_reject
    • Upon approval or rejection, the system uses the system email to inform the requestor about the resolution

Approvers:

  • The approvers must be part of the management chain above the requestor.
  • If you set "first_level_management" as a parameter, the system will notify first line managers only
  • If you set __approvers__ as a parameter, the approval will be requested from all employees listed in the json field "approvers". The following columns have to be present in the module - approvers json not null, approvers_names json not null.

Delegations:

  • The approvers must be part of the management chain above the requestor.

RequestReview

This function sends a review request (email) to a reviewer.

The email template is defined in module: Email Templates - review_request

Function parameters:

template|email1|email2

RequestSignatureWithEvrtorust

This function creates a PDF snapshot and sends it to EvroTrust for signature. The PDF is sent to the selected employee (field "staff_id").

Requirements:

  • Evrotrust API keys
  • The target module must contain a character varying field called "name". It should contain the description of the document.

RollBackManufacturingRequest

  1. Searches all warehouse slips related to this manufacturing request.
  2. Deletes all products and materials and restores all quantities

SendEmail

Sends an email to selected target contacts, target groups, owner of the record and the assignee.

An email template name can be passed as a function parameter. This is done the following way:

SendEmail|template_name|recipient_1|recipient_2|recipeint_N

  • template_name - the name of the template residing in the email_templates module
  • recipient_N - Can be one of the following:
    • column name - a column that points to the users module, e.g. user_id (integer references users)
    • email address
    • management_chain - two levels above the employee
    • a column name holding the email address of the recipient
    • first_level_management_chain - one level above the employee
    • staff_json - looks for a column called 'staff_json'. The column must be type JSON and must contain the following json structure [ID, ...], e.g. [1,2,3], where 1, 2, 3 are IDs of employees in module "Staff" (fields first_manager_json, observers_json, budget_owners, second_manager_json also work).
    • __PRIV__PrivilegeName - e.g. __PRIV__Accouting. This will send email to employees in this privilege group

SendEmailWithAttachment

Sends an email and attaches a pdf template to the email.

StartBulk

This function can only be used in modules "Tenders" and "Surveys"

It starts a tender or survey by selecting all participants and creating a record for each of them in the "Participants" table (survey_instances or tenders_instances). It copies all the data related to the record as well - questions etc.

It is mandatory to define participants before using this function

StartProject

This function changes the status of the related project to "started". The module should contain a filed named project_id and it should point to a project in order the function to work

TransferAssetQty

No description available.

TransferQty

Transfer quantities from one warehouse location to another. Works ony in warehouse_transfers

WarehouseTransfer

Used only in module Manufacturing requests. It transfers the manufactured product from one warehouse location to another. Useful for step Assembly. Accepts the following parameters:

SourceWarehouseID -> DestinationWarehouseID

Example:

1 -> 2